$(function(){

	var jct_id = 0;
	
// Напоминание о выборе строки
	function selRowPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите строку в таблице.", 'app-icon-stop32');
	}
	function selOnePlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите только одну строку в таблице.", 'app-icon-stop32');
	}
	function selCatPlease() {
		app.alert('AlertDlg', 'Внимание', "Пожалуйста, выберите категорию платежа.", 'app-icon-stop32');
	}
		
    app.ShowJobCatsDic = function (dlgID) {
        var btpTab, itpTab, otpTab;
        var aldlg = $('#' + dlgID);

        if ($('#' + dlgID + 'Tab').length) return;
		
		var me = this;
		aldlg.dialog(
		{
			modal: false, title: 'Справочник категорий работ и платежей',
			height: 340, width: 380,
			closeOnEscape: true,
			autoOpen: false,
			resizable: false,
			resize: function( e, ui ) { 
			},
			open: function () { 
				aldlg.load('index.php', {q:'jobcats'}, createDialogContent );
				$('div[aria-describedby="' + dlgID + '"]').shadow(); 
			},
			close: function () {
				aldlg.empty();
				aldlg.dialog("destroy");
			}
		});

		this.Close = function() { aldlg.dialog('close'); };
		aldlg.dialog('open');
		
		function createDialogContent() {
			var dtree = aldlg.find("#job_cats_list");
			var oDtree, rootNode;
			var ins = aldlg.find("#job_cat_insert");
			var upd = aldlg.find("#job_cat_update");
			var del = aldlg.find("#job_cat_delete");
			var refr = aldlg.find("#job_cat_refresh");
			var ord = aldlg.find("#job_cat_ord");
			var desc = aldlg.find("#job_cat_descrip");
			
			$.ui.dynatree.nodedatadefaults["icon"] = false;
			jct_id = 0;
			
// Получить список категорий
			dtree.dynatree({
				clickFolderMode: 1,
				initAjax: {
					url: "index.php",
					data: { q: "jobcats/listjct" }
				},
				onCreate: function(node, nodeSpan) {
					if( typeof node.data.errcode != 'undefined' ) {
                        app.alert('AlertDlg', 'Ошибка', node.data.errmess, 'app-icon-stop32', me.Close );					
					}
				},
				onPostInit: function( isReload, isError ) {
					if( !isError ) {
						rootNode.sortChildren(sortbyorder);
					}
				},
				onClick: function(node, event) {
					// Hack for leaf expanding too 
					if( node.hasChildren() && node.getEventTargetType(event) == "title"){ node.toggleExpand(); }
					return true;
				},			
				onActivate: function(node) {
					jct_id = node.data.key;
					ord.val(node.data.order);
					desc.val(node.data.title);
				}
			});
			
			oDtree = dtree.dynatree("getTree");
			rootNode = dtree.dynatree("getRoot");
			
// Sort by 'order' field			
			function sortbyorder( a, b ) {
				var m = parseInt(a.data.order,10);
				var n = parseInt(b.data.order,10);
				return m > n ? 1 : m < n ? -1 : 0;						
			};
			
// Добавить новую категорию
			ins.button({icons:{primary: "ui-icon-plus"}});
			ins.click(function() { 
				if( ord.val() == '' || desc.val() == '' ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Пожалуйста. Заполните все поля ввода.', 'app-icon-stop32');
					return false;
				}
                $.post('index.php', { 
						q: 'jobcats/insjct',
						jct_order: ord.val(),
						jct_descr: desc.val() 
					},
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
                        if (typeof rsp.data.key != 'undefined') {
							rootNode.addChild({
								key: rsp.data.key,
								title: rsp.data.title,
								order: rsp.data.order,
								isFolder: false
							});
							rootNode.sortChildren(sortbyorder);
							oDtree.redraw();
							oDtree.activateKey(rsp.data.key);
                        }
						
                    }, 'json'
				);
			});
		
// Изменить работу
			upd.button({icons:{primary: "ui-icon-pencil"}});
			upd.click(function() { 
				var node = dtree.dynatree("getActiveNode");
				if( ord.val() == '' || desc.val() == '' ) {
					app.alert('AlertDlg', 'Опс-с-с !!!', 'Пожалуйста. Заполните все поля ввода.', 'app-icon-stop32');
					return false;
				}
				if( !node || !node.data.key || node.data.key != jct_id ) {
					selCatPlease();
					return;
				}
				
				$.post('index.php', { 
						q:'jobcats/updjct', 
						jct_id: jct_id, 
						jct_order: ord.val(),
						jct_descr: desc.val() 
					},
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
                        if (typeof rsp.data.key != 'undefined' && node.data.key == rsp.data.key ) {
							node.data.title = rsp.data.title;
							node.data.order = rsp.data.order;
							node.render();
						}
						rootNode.sortChildren(sortbyorder);
						oDtree.reactivate();
                    }, 'json'
				);
			});
		
// Удалить тип работы
			del.button({icons:{primary: "ui-icon-trash"}});
			del.click( function() { 
				var node = dtree.dynatree("getActiveNode");
				if( !node || !node.data.key || node.data.key != jct_id ) {
					selCatPlease();
					return;
				}
				app.confirm('AlertDlg', 'Требуется подтверждение', 'Удалить категорию платежей из списка ?', 
						'app-icon-quest32', delCat, node );
			});
			
			function delCat(node) { 
                $.post('index.php', { q: 'jobcats/deljct', jct_id: jct_id },
					function (rsp, textStatus) {
						if (rsp.errcode) {
							if (rsp.errcode == '999') { alert(rsp.errmess); }
							else app.alert('AlertDlg', 'Ошибка', rsp.errmess, 'app-icon-stop32');
							return;
						}
						ord.val('');
						desc.val('');
						jct_id = 0;
						node.remove();
                    }, 'json'
				);
			}
			
// Очистить
			refr.button({icons:{primary: "ui-icon-refresh"}});
			refr.click( function() { 
				oDtree.reload();
				ord.val('');
				desc.val('');
				jct_id = 0;
			});			
		}
    }
});
